home *** CD-ROM | disk | FTP | other *** search
-
- how to create a keygen for FireWorx Crackme 6...
-
- i hope you have read Terminal Cilla's Tutorial#4, if so, follow it, until the calculate
- code call, then trace into this..
-
-
- 015F:00441701 8BF8 MOV EDI,EAX ; pointer to name
- 015F:00441703 BB05033949 MOV EBX,49390305 ; magic number #1
- 015F:00441708 BE20126348 MOV ESI,48631220 ; magic number #2
- 015F:0044170D 8BC7 MOV EAX,EDI
- 015F:0044170F E82023FCFF CALL 00403A34 ; get name length
- 015F:00441714 85C0 TEST EAX,EAX ; check is bigger than 0
- 015F:00441716 7E2E JLE 00441746 ;
-
-
- the above code just gets the length of our name... ignore it..(apart from the magic number bit)
-
-
- 015F:00441718 BA01000000 MOV EDX,00000001
- 015F:0044171D 33C9 XOR ECX,ECX ; prepare ecx for a byte from name
- 015F:0044171F 8A4C17FF MOV CL,[EDX+EDI-01] ; get a character
- 015F:00441723 33D9 XOR EBX,ECX ; xor it with ebx
- 015F:00441725 33F3 XOR ESI,EBX ; xor ebx with esi
- 015F:00441727 F6C301 TEST BL,01 ; test bit #1 in bl for some reason
- 015F:0044172A 740F JZ 0044173B
- 015F:0044172C D1FB SAR EBX,1 ; shift ebx right, 1 bit
- 015F:0044172E 7903 JNS 00441733 ; jump if not signed (signed = negative)
- 015F:00441730 83D300 ADC EBX,00 ; ?? add with carry??
- 015F:00441733 81F311032001 XOR EBX,01200311 ; xor ebx again
- 015F:00441739 EB07 JMP 00441742
- 015F:0044173B D1FB SAR EBX,1 ; shift ebx right, 1 bit again
- 015F:0044173D 7903 JNS 00441742
- 015F:0044173F 83D300 ADC EBX,00
- 015F:00441742 42 INC EDX ; increase letter pointer counter thing
- 015F:00441743 48 DEC EAX ; decrease length counter
- 015F:00441744 75D7 JNZ 0044171D ; do maths again, until no letters left
-
-
- the code above is the main serial generator, quite small and simple, all we have to do is
- 'borrow' this code, and replicate it in your favorite programming language. after this routine
- has finished, ebx & esi = our valid serial
-
-
- 015F:00441746 8B0424 MOV EAX,[ESP]
- 015F:00441749 50 PUSH EAX
- 015F:0044174A 8BC3 MOV EAX,EBX
- 015F:0044174C 25FFFF0000 AND EAX,0000FFFF ; get low word of ebx (reg#1)
- 015F:00441751 89442408 MOV [ESP+08],EAX
- 015F:00441755 C644240C00 MOV BYTE PTR [ESP+0C],00
- 015F:0044175A C1EB10 SHR EBX,10 ; get high word of ebx (reg#2)
- 015F:0044175D 895C2410 MOV [ESP+10],EBX
- 015F:00441761 C644241400 MOV BYTE PTR [ESP+14],00
- 015F:00441766 8BC6 MOV EAX,ESI
- 015F:00441768 25FFFF0000 AND EAX,0000FFFF ; lo word of esi (reg#3)
- 015F:0044176D 89442418 MOV [ESP+18],EAX
- 015F:00441771 C644241C00 MOV BYTE PTR [ESP+1C],00
- 015F:00441776 C1EE10 SHR ESI,10 ; high word of esi (reg#4)
- 015F:00441779 89742420 MOV [ESP+20],ESI
- 015F:0044177D C644242400 MOV BYTE PTR [ESP+24],00
-
-
- ^this code^ simple splits up the quad serial into 4 words, for conversion into our ascii code
-
-
- 015F:00441782 8D542408 LEA EDX,[ESP+08]
- 015F:00441786 B903000000 MOV ECX,00000003
- 015F:0044178B B8A4174400 MOV EAX,004417A4
- 015F:00441790 E86F68FCFF CALL 00408004 ; convert hex into ascii & add '-'
- 015F:00441795 83C424 ADD ESP,24
- 015F:00441798 5F POP EDI
- 015F:00441799 5E POP ESI
- 015F:0044179A 5B POP EBX
- 015F:0044179B C3 RET
-
-
- :?ebx
- 054F923B 0089100859 "OÆ;"
- :?esi
- 3FC7F3B6 1070068662 "?╟≤╢"
-
- my code, 923B-054F-F3B6-3FC7
- my name 'R!SC'
-
-
- okay, real simple, see firecm#6.asm for an example keygen...
-
-
- Greets to:
- Duelist (tut tut, writing uncrackable crackme's, there should be a rule about that..)
- DnNuke, ACiD_BuRN, (mad)Dead-Mike, Magic Mike, Wizzkid, Eternal Bliss, ChoJin, _y :P
-
-
-
-
-
- all my love, R!SC ?